In performing various robotic tasks, it may be beneficial and/or necessary for robots to detect environmental objects and estimate poses (positions and orientations) for those detected objects. For example, an automated pallet jack robot needs to know a pallet's pose before picking it up, a robot needs to know an object's pose before determining how best to pick it up (e.g., with a robotic arm of the robot), etc. As used herein, a “pose” of an object references both a position of the object and an orientation of the object. For example, the pose of an object may describe the state of each of six degrees of freedom of the object.
Various techniques have been utilized for detecting objects and estimating their poses. For example, a robot may have access to a complete three-dimensional (“3D”) model of an object that was generated from a CAD model of the object and/or using a 3D scanner to scan the object from all different angles and combining all the scans together to compute the complete 3D model. The robot may acquire data from a 3D laser scanner or other 3D vision sensor (e.g., stereographic camera) viewing a portion of the robot's environment, and map such data to the complete 3D model to determine the object is present in the environment and to estimate the object's pose in the environment.